package VistaConexion;

/**
 *
 * @author Esteban Puello y Raul Piñeres
 */
import datos.Arbol;
import datos.Regla;
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import datos.ClaseCirculo;
import datos.ReglasArbol;

public class MuestraArbol {

    public JPanel panel;
    public JFrame frame;
    public ArrayList<Integer> ubi = new ArrayList<Integer>();

    public MuestraArbol(ArrayList<Regla> regla) {
        frame = new JFrame("Arbol");
        frame.setSize(1000, 500);
        panel = new JPanel();
        panel.setSize(new Dimension(frame.WIDTH, frame.HEIGHT));
        panel.setLayout(null);
        ReglasArbol cl = new ReglasArbol();
        Arbol ar = cl.LeerReglas(regla);
        this.agregaCirculo(ar, 150, 0, 0);
        frame.add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    private void agregaCirculo(Arbol er, int k, int j, int ub) {
        if (ubi.isEmpty()) {
            ubi.add(k);
        } else if (ubi.size() < ub + 1) {
            ubi.add(60);
        }
        for (int i = 0; i < er.getLinea().size(); i++) {

            ClaseCirculo CC = new ClaseCirculo();
            if (i == 0) {
                CC.ClaseCirculo(ubi.get(ub), j, er.getNombre());
                this.panel.add(CC.getEtiqueta3());
                ubi.set(ub, ubi.get(ub) + 100);
            }
            agregaCirculo(er.getAr().get(i), k + (ubi.get(ub)), j + 70, ub + 1);
        }
        if (er.getLinea().isEmpty()) {
            ClaseCirculo CC = new ClaseCirculo();
            CC.ClaseCirculo(ubi.get(ub), j, er.getNombre());
            this.panel.add(CC.getEtiqueta3());
            ubi.set(ub, ubi.get(ub) + 100);
        }
        if (!er.getLinea().isEmpty()) {
            ClaseCirculo CC = new ClaseCirculo();
            int ubication = ubi.get(ub + 1) - 50;
            if(ub>0){
                j+=38*ub;
            }
            for (int w = er.getAr().size() - 1; w >= 0; w--) {
                CC.ClaseCirculo(ubi.get(ub) - 50, j + 45, er.getLinea().get(w), ubication, j + 100, 1000, 1000);
                this.panel.add(CC.getEtiqueta3());
                this.panel.add(CC.getEtiqueta2());
                ubication -= 100;
            }
        }
    }
}
//Se acaba el codigo agregado por esteban puello y raul piñeres